In [1]:
import pyodbc
import sqlalchemy as sa
# Connection String
"Driver={ODBC Driver 17 for SQL Server};Server=<L161>;Database=<AdventureWorks2016>;Trusted_Connection=yes;"
conn_str = (
"Driver={ODBC Driver 17 for SQL Server};"
"Server=MOKGETHWA;"
"Database=AdventureWorks2016;"
"Trusted_Connection=yes;"
)
In [2]:
# Create a Connection
conn = pyodbc.connect(conn_str)
# Create a Cursor
cursor = conn.cursor()
# Execute a Query
cursor.execute("SELECT TOP 100 * FROM Sales.SalesOrderHeader")
# Fetch Results
batch_size = 1000
results = cursor.fetchmany(batch_size)
# Process Results
for row in results:
print(row)
# Close the cursor and connection
cursor.close()
conn.close()
(43661, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43661', 'PO18473189620', '10-4020-000442', 29734, 282, 6, 517, 517, 5, 1346, '85274Vi6854', 4, Decimal('32726.4786'), Decimal('3153.7696'), Decimal('985.5530'), Decimal('36865.8012'), None, 'D91B9131-18A4-4A11-BC3A-90B6F53E9D74', datetime.datetime(2011, 6, 7, 0, 0))
(43662, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43662', 'PO18444174044', '10-4020-000227', 29994, 282, 6, 482, 482, 5, 10456, '125295Vi53935', 4, Decimal('28832.5289'), Decimal('2775.1646'), Decimal('867.2389'), Decimal('32474.9324'), None, '4A1ECFC0-CC3A-4740-B028-1C50BB48711C', datetime.datetime(2011, 6, 7, 0, 0))
(43668, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43668', 'PO14732180295', '10-4020-000514', 29614, 282, 6, 529, 529, 5, 1566, '85817Vi8045', 4, Decimal('35944.1562'), Decimal('3461.7654'), Decimal('1081.8017'), Decimal('40487.7233'), None, '281CC355-D538-494E-9B44-461B36A826C6', datetime.datetime(2011, 6, 7, 0, 0))
(43672, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43672', 'PO13862153537', '10-4020-000119', 30067, 282, 6, 464, 464, 5, 3980, '95915Vi20982', 4, Decimal('6124.1820'), Decimal('587.6023'), Decimal('183.6257'), Decimal('6895.4100'), None, '194202AA-8E15-4932-A2C4-7A7AC0713639', datetime.datetime(2011, 6, 7, 0, 0))
(43674, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43674', 'PO12760141756', '10-4020-000083', 29596, 282, 6, 458, 458, 5, 19204, '26081Vi99806', 4, Decimal('2624.3820'), Decimal('251.9407'), Decimal('78.7315'), Decimal('2955.0542'), None, 'CE8BCA02-F705-4AAE-A446-5D8B660C3A1B', datetime.datetime(2011, 6, 7, 0, 0))
(43677, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43677', 'PO11049174786', '10-4020-000679', 29824, 278, 6, 556, 556, 5, 14030, '16302Vi72763', 4, Decimal('7793.1108'), Decimal('747.1011'), Decimal('233.4691'), Decimal('8773.6810'), None, '95FAAF28-6495-40B0-9789-466B195F2F96', datetime.datetime(2011, 6, 7, 0, 0))
(43679, 8, datetime.datetime(2011, 5, 31, 0, 0), datetime.datetime(2011, 6, 12, 0, 0), datetime.datetime(2011, 6, 7, 0, 0), 5, False, 'SO43679', 'PO10527142759', '10-4020-000480', 29761, 278, 6, 525, 525, 5, 5439, '126365Vi28482', 4, Decimal('1316.0575'), Decimal('125.8032'), Decimal('39.3135'), Decimal('1481.1742'), None, '17D42D83-177D-4C7E-9C86-D2DB69326E04', datetime.datetime(2011, 6, 7, 0, 0))
(43844, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43844', 'PO19691138342', '10-4020-000353', 29620, 282, 6, 503, 503, 5, 5577, '105103Vi29202', 407, Decimal('20249.9400'), Decimal('1943.9942'), Decimal('607.4982'), Decimal('22801.4324'), None, 'B90DB933-2D63-4B51-9B14-599DD8DE2466', datetime.datetime(2011, 7, 8, 0, 0))
(43846, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43846', 'PO19430112391', '10-4020-000318', 29548, 278, 6, 498, 498, 5, 5528, '115137Vi28965', 407, Decimal('919.5201'), Decimal('90.6637'), Decimal('28.3324'), Decimal('1038.5162'), None, 'ECE0D5A4-8384-43D3-AF7B-92ED5C1ED760', datetime.datetime(2011, 7, 8, 0, 0))
(43847, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43847', 'PO19227161888', '10-4020-000210', 29539, 278, 6, 480, 480, 5, 181, '55182Vi966', 407, Decimal('908.8209'), Decimal('86.9292'), Decimal('27.1654'), Decimal('1022.9155'), None, 'D87ECCC0-6DC2-4814-BC29-9BB76A02861E', datetime.datetime(2011, 7, 8, 0, 0))
(43850, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43850', 'PO18415143340', '10-4020-000191', 29892, 282, 6, 476, 476, 5, 11072, '75292Vi57135', 407, Decimal('10183.7952'), Decimal('982.9377'), Decimal('307.1680'), Decimal('11473.9009'), None, 'FA64E91A-A5EA-4A9D-86BC-E92AAD0E3E2C', datetime.datetime(2011, 7, 8, 0, 0))
(43852, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43852', 'PO17864179720', '10-4020-000568', 29855, 282, 6, 539, 539, 5, 8043, '115310Vi41710', 407, Decimal('2024.9940'), Decimal('194.3994'), Decimal('60.7498'), Decimal('2280.1432'), None, 'EC8883D3-214D-4E31-A25A-B74BAF6163C5', datetime.datetime(2011, 7, 8, 0, 0))
(43853, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43853', 'PO18270155899', '10-4020-000011', 29813, 282, 6, 446, 446, 5, 12279, '85313Vi63488', 407, Decimal('26354.9220'), Decimal('2530.0725'), Decimal('790.6477'), Decimal('29675.6422'), None, 'C61DE9AF-0C09-4894-B6EA-E27C6652C354', datetime.datetime(2011, 7, 8, 0, 0))
(43854, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43854', 'PO17777139245', '10-4020-000208', 29988, 282, 6, 478, 478, 5, 9855, '45354Vi50783', 407, Decimal('1749.5880'), Decimal('167.9604'), Decimal('52.4876'), Decimal('1970.0360'), None, 'C69BEAF4-1C0E-425B-9B7E-AD8B0E3BCF89', datetime.datetime(2011, 7, 8, 0, 0))
(43855, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43855', 'PO17748116016', '10-4020-000102', 29946, 278, 6, 462, 462, 5, 14454, '65357Vi74935', 407, Decimal('10993.3516'), Decimal('1058.7224'), Decimal('330.8508'), Decimal('12382.9248'), None, 'B691D9F1-475F-4CD0-99E5-2AFD69FB659E', datetime.datetime(2011, 7, 8, 0, 0))
(43856, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43856', 'PO17313123131', '10-4020-000389', 29680, 282, 6, 509, 509, 5, 18049, '55434Vi93678', 407, Decimal('2036.3940'), Decimal('195.3874'), Decimal('61.0586'), Decimal('2292.8400'), None, '910347FD-9759-4A08-99EE-0BA5F965004B', datetime.datetime(2011, 7, 8, 0, 0))
(43857, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43857', 'PO16733124458', '10-4020-000533', 30074, 282, 6, 534, 534, 5, 18260, '45523Vi94762', 407, Decimal('7186.5371'), Decimal('689.0520'), Decimal('215.3287'), Decimal('8090.9178'), None, 'B4EEA46B-8C3B-44DD-A6F3-D4C9B357D8D6', datetime.datetime(2011, 7, 8, 0, 0))
(43868, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43868', 'PO14848158712', '10-4020-000478', 30042, 282, 6, 523, 523, 5, 10628, '85848Vi54777', 407, Decimal('2146.9620'), Decimal('206.1084'), Decimal('64.4089'), Decimal('2417.4793'), None, '8417B236-D1CD-4916-97BF-4F76BA08C031', datetime.datetime(2011, 7, 8, 0, 0))
(43879, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43879', 'PO11600128380', '10-4020-000569', 29510, 282, 6, 540, 540, 5, 14729, '26285Vi76327', 407, Decimal('21718.7639'), Decimal('2087.8858'), Decimal('652.4643'), Decimal('24459.1140'), None, 'E7812579-E1A0-4997-9027-A1AFB625C9E7', datetime.datetime(2011, 7, 8, 0, 0))
(43880, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43880', 'PO11020127453', '10-4020-000336', 29789, 278, 6, 501, 501, 5, 18316, '126355Vi95120', 407, Decimal('15479.5500'), Decimal('1488.4458'), Decimal('465.1393'), Decimal('17433.1351'), None, '77F5C860-1887-4B14-96BF-FE58CA4FB307', datetime.datetime(2011, 7, 8, 0, 0))
(43882, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43882', 'PO10469165208', '10-4020-000335', 29558, 282, 6, 500, 500, 5, 11282, '66419Vi58190', 407, Decimal('2024.9940'), Decimal('194.3994'), Decimal('60.7498'), Decimal('2280.1432'), None, '1FADFAE5-C70E-49A6-892D-6D80949D3C44', datetime.datetime(2011, 7, 8, 0, 0))
(43886, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43886', 'PO1827149671', '10-4020-000317', 29698, 282, 6, 497, 497, 5, 11745, '76664Vi60734', 407, Decimal('17358.0101'), Decimal('1664.9942'), Decimal('520.3107'), Decimal('19543.3150'), None, 'D2F8BA9F-0619-4A06-B7B7-7C38D088DB2B', datetime.datetime(2011, 7, 8, 0, 0))
(43888, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43888', 'PO2088113013', '10-4020-000136', 29794, 282, 6, 466, 466, 5, 12102, '96752Vi62574', 407, Decimal('14432.8174'), Decimal('1388.4649'), Decimal('433.8953'), Decimal('16255.1776'), None, '2A00B8DD-78A6-4DF8-BAE5-58B1B4A78AAF', datetime.datetime(2011, 7, 8, 0, 0))
(43889, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43889', 'PO2030112412', '10-4020-000661', 29830, 278, 6, 553, 553, 5, 16905, '126756Vi87636', 407, Decimal('2082.6748'), Decimal('199.3984'), Decimal('62.3120'), Decimal('2344.3852'), None, '9E9DA825-41BA-443C-BCA6-02121373F476', datetime.datetime(2011, 7, 8, 0, 0))
(43890, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43890', 'PO2146115360', '10-4020-000354', 29515, 278, 6, 504, 504, 5, 14184, '66771Vi73564', 407, Decimal('75191.9599'), Decimal('7234.3070'), Decimal('2260.7209'), Decimal('84686.9878'), None, 'C52362A5-CF6F-40EC-8457-CABDA3669C0E', datetime.datetime(2011, 7, 8, 0, 0))
(43891, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43891', 'PO2726163521', '10-4020-000029', 29807, 282, 6, 449, 449, 5, 13366, '36797Vi69277', 407, Decimal('32569.1040'), Decimal('3126.3148'), Decimal('976.9734'), Decimal('36672.3922'), None, '4978ADE9-D759-4925-B079-519498705B8F', datetime.datetime(2011, 7, 8, 0, 0))
(43893, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43893', 'PO2204129382', '10-4020-000370', 29905, 282, 6, 505, 505, 5, 18480, '116815Vi96000', 407, Decimal('419.4589'), Decimal('40.2681'), Decimal('12.5838'), Decimal('472.3108'), None, 'F3AFB011-5243-435C-9895-A520A4FC972D', datetime.datetime(2011, 7, 8, 0, 0))
(43898, 8, datetime.datetime(2011, 7, 1, 0, 0), datetime.datetime(2011, 7, 13, 0, 0), datetime.datetime(2011, 7, 8, 0, 0), 5, False, 'SO43898', 'PO4901196283', '10-4020-000084', 29705, 278, 6, 459, 459, 5, 6452, '48128Vi33489', 407, Decimal('50948.9161'), Decimal('4908.5808'), Decimal('1533.9315'), Decimal('57391.4284'), None, '0EE148B4-365E-4998-9D71-FB0E3291701D', datetime.datetime(2011, 7, 8, 0, 0))
(44077, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44077', 'PO19401178507', '10-4020-000173', 29714, 282, 6, 473, 473, 5, 6065, '45149Vi31551', 810, Decimal('6105.3293'), Decimal('584.8735'), Decimal('182.7730'), Decimal('6872.9758'), None, '856D52E5-5A18-404E-8FFD-376A291FA8FF', datetime.datetime(2011, 8, 8, 0, 0))
(44081, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44081', 'PO18299115585', '10-4020-000118', 29950, 282, 6, 463, 463, 5, 5110, '105343Vi26747', 810, Decimal('37536.9632'), Decimal('3611.5620'), Decimal('1128.6131'), Decimal('42277.1383'), None, '717C9440-7BB9-4521-A7C2-54808DB36DCA', datetime.datetime(2011, 8, 8, 0, 0))
(44082, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44082', 'PO17690137364', '10-4020-000047', 29803, 274, 6, 452, 452, 5, 8552, '125349Vi44231', 810, Decimal('2039.9940'), Decimal('195.8394'), Decimal('61.1998'), Decimal('2297.0332'), None, 'C1E9D4F9-5179-46F4-8697-4EA6D1A0BDA7', datetime.datetime(2011, 8, 8, 0, 0))
(44083, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44083', 'PO17719115878', '10-4020-000631', 29969, 278, 6, 548, 548, 5, 7454, '55359Vi38653', 810, Decimal('1362.3067'), Decimal('130.1463'), Decimal('40.6707'), Decimal('1533.1237'), None, 'C602D43C-6DCF-4593-9EE9-D8872583A265', datetime.datetime(2011, 8, 8, 0, 0))
(44084, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44084', 'PO17835143404', '10-4020-000551', 29494, 282, 6, 537, 537, 5, 17600, '15361Vi91370', 810, Decimal('8129.9760'), Decimal('780.4777'), Decimal('243.8993'), Decimal('9154.3530'), None, 'CB29CC5F-ACBA-4167-A790-C07C155A7C4B', datetime.datetime(2011, 8, 8, 0, 0))
(44085, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44085', 'PO17545192039', '10-4020-000155', 29639, 282, 6, 470, 470, 5, 4357, '85389Vi22856', 810, Decimal('20644.2343'), Decimal('1981.2698'), Decimal('619.1468'), Decimal('23244.6509'), None, '41EC06AB-D781-4409-9B89-D5DEEFFED59E', datetime.datetime(2011, 8, 8, 0, 0))
(44086, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44086', 'PO17574175064', '10-4020-000678', 29722, 282, 6, 555, 555, 5, 12698, '65401Vi65677', 810, Decimal('73761.5266'), Decimal('7108.6377'), Decimal('2221.4493'), Decimal('83091.6136'), None, 'D98578B7-7D64-4D19-9234-8A962437A4E1', datetime.datetime(2011, 8, 8, 0, 0))
(44094, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44094', 'PO14877175150', '10-4020-000172', 29711, 282, 6, 472, 472, 5, 17062, '15779Vi88581', 810, Decimal('4079.9880'), Decimal('391.6788'), Decimal('122.3996'), Decimal('4594.0664'), None, 'EDD427F5-D38C-4B54-8425-8D2F11E8CD57', datetime.datetime(2011, 8, 8, 0, 0))
(44103, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44103', 'PO11107175113', '10-4020-000156', 29577, 278, 6, 471, 471, 5, 319, '16306Vi1621', 810, Decimal('3814.3435'), Decimal('365.8110'), Decimal('114.3159'), Decimal('4294.4704'), None, '186DDD42-BCA6-4A17-B57A-57FD6D5F11CB', datetime.datetime(2011, 8, 8, 0, 0))
(44104, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44104', 'PO10585171940', '10-4020-000498', 29755, 278, 6, 528, 528, 5, 6955, '26435Vi36178', 810, Decimal('4079.9880'), Decimal('391.6788'), Decimal('122.3996'), Decimal('4594.0664'), None, 'D4E91486-402F-4E78-8351-755D9525CC56', datetime.datetime(2011, 8, 8, 0, 0))
(44111, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44111', 'PO1740120267', '10-4020-000460', 29740, 282, 6, 520, 520, 5, 18813, '126720Vi97739', 810, Decimal('11641.3209'), Decimal('1117.8610'), Decimal('349.3315'), Decimal('13108.5134'), None, '27E56CE4-BBCE-47C8-8FB2-EAB2D36D88DB', datetime.datetime(2011, 8, 8, 0, 0))
(44112, 8, datetime.datetime(2011, 8, 1, 0, 0), datetime.datetime(2011, 8, 13, 0, 0), datetime.datetime(2011, 8, 8, 0, 0), 5, False, 'SO44112', 'PO1885183650', '10-4020-000588', 29649, 278, 6, 544, 544, 5, 778, '126735Vi3956', 810, Decimal('32444.9040'), Decimal('3114.7108'), Decimal('973.3471'), Decimal('36532.9619'), None, '187CF120-E9A2-4819-99EF-5F5BB2DAE09B', datetime.datetime(2011, 8, 8, 0, 0))
(44282, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44282', 'PO18473177808', '10-4020-000442', 29734, 282, 6, 517, 517, 5, 1346, '85279Vi6854', 1200, Decimal('40341.1056'), Decimal('3880.2722'), Decimal('1212.5851'), Decimal('45433.9629'), None, '181D7624-F907-41B6-90B8-B95899CA2B27', datetime.datetime(2011, 9, 7, 0, 0))
(44283, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44283', 'PO18444150042', '10-4020-000227', 29994, 282, 6, 482, 482, 5, 10456, '125328Vi53935', 1200, Decimal('43749.2686'), Decimal('4227.3062'), Decimal('1321.0332'), Decimal('49297.6080'), None, 'AD1B5366-909B-458E-BD0C-6843380E1271', datetime.datetime(2011, 9, 7, 0, 0))
(44288, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44288', 'PO14732190246', '10-4020-000514', 29614, 282, 6, 529, 529, 5, 1566, '85822Vi8045', 1200, Decimal('43803.1432'), Decimal('4223.3908'), Decimal('1319.8096'), Decimal('49346.3436'), None, 'CA5C4F3B-CBF7-43D7-8DE7-D65A4C646B35', datetime.datetime(2011, 9, 7, 0, 0))
(44294, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44294', 'PO13862172262', '10-4020-000119', 30067, 282, 6, 464, 464, 5, 3980, '95972Vi20982', 1200, Decimal('62068.8727'), Decimal('5966.6810'), Decimal('1864.5878'), Decimal('69900.1415'), None, 'E190BE0D-7D4F-497B-AFFC-67DD1E5B4D47', datetime.datetime(2011, 9, 7, 0, 0))
(44295, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44295', 'PO12760122918', '10-4020-000083', 29596, 282, 6, 458, 458, 5, 19204, '26097Vi99806', 1200, Decimal('9475.5306'), Decimal('909.0158'), Decimal('284.0674'), Decimal('10668.6138'), None, '06E0047A-A8D6-4DE5-8BCD-52570C144647', datetime.datetime(2011, 9, 7, 0, 0))
(44298, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44298', 'PO11049118093', '10-4020-000679', 29824, 278, 6, 556, 556, 5, 14030, '16343Vi72763', 1200, Decimal('27666.4493'), Decimal('2656.7147'), Decimal('830.2234'), Decimal('31153.3874'), None, '8F8E4872-4E06-4495-AAA1-481E67FEE297', datetime.datetime(2011, 9, 7, 0, 0))
(44300, 8, datetime.datetime(2011, 8, 31, 0, 0), datetime.datetime(2011, 9, 12, 0, 0), datetime.datetime(2011, 9, 7, 0, 0), 5, False, 'SO44300', 'PO10527120063', '10-4020-000480', 29761, 278, 6, 525, 525, 5, 5439, '126385Vi28482', 1200, Decimal('7802.8815'), Decimal('748.3930'), Decimal('233.8728'), Decimal('8785.1473'), None, 'DFD4EAB5-B804-4703-ACA8-734872C0F03E', datetime.datetime(2011, 9, 7, 0, 0))
(44484, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44484', 'PO19691173790', '10-4020-000353', 29620, 282, 6, 503, 503, 5, 5577, '105060Vi29202', 1603, Decimal('8184.8760'), Decimal('785.3757'), Decimal('245.4299'), Decimal('9215.6816'), None, 'A04A30BD-717C-4FFE-973A-3B92125049BC', datetime.datetime(2011, 10, 8, 0, 0))
(44485, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44485', 'PO20242116788', '10-4020-000390', 30058, 278, 6, 510, 510, 5, 3088, '55067Vi16259', 1603, Decimal('4049.9880'), Decimal('388.7988'), Decimal('121.4996'), Decimal('4560.2864'), None, '96482A83-35E5-4A97-A3A8-C8BDFC89A435', datetime.datetime(2011, 10, 8, 0, 0))
(44486, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44486', 'PO19430111880', '10-4020-000318', 29548, 278, 6, 498, 498, 5, 5528, '115095Vi28965', 1603, Decimal('603.3971'), Decimal('58.4166'), Decimal('18.2552'), Decimal('680.0689'), None, '1487D2AD-60E8-4E9C-B3F8-0FF086A3B5DF', datetime.datetime(2011, 10, 8, 0, 0))
(44490, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44490', 'PO19227160482', '10-4020-000210', 29539, 278, 6, 480, 480, 5, 181, '55185Vi966', 1603, Decimal('3389.6981'), Decimal('325.0934'), Decimal('101.5917'), Decimal('3816.3832'), None, '1FE3A497-8A74-4332-998A-45272D66B746', datetime.datetime(2011, 10, 8, 0, 0))
(44495, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44495', 'PO18270111190', '10-4020-000011', 29813, 282, 6, 446, 446, 5, 12279, '85305Vi63488', 1603, Decimal('4076.3880'), Decimal('391.2268'), Decimal('122.2584'), Decimal('4589.8732'), None, '243FC737-17B6-4F3F-838E-A9AA9C0E8EC4', datetime.datetime(2011, 10, 8, 0, 0))
(44496, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44496', 'PO18415194469', '10-4020-000191', 29892, 282, 6, 476, 476, 5, 11072, '75307Vi57135', 1603, Decimal('29797.1606'), Decimal('2861.0179'), Decimal('894.0681'), Decimal('33552.2466'), None, '74548A2E-1101-40FB-9B33-001B66CF4309', datetime.datetime(2011, 10, 8, 0, 0))
(44497, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44497', 'PO17777180922', '10-4020-000208', 29988, 282, 6, 478, 478, 5, 9855, '45350Vi50783', 1603, Decimal('1195.8158'), Decimal('115.7500'), Decimal('36.1719'), Decimal('1347.7377'), None, '566A2142-84F8-4B0D-9EE8-FE95E49EAE23', datetime.datetime(2011, 10, 8, 0, 0))
(44498, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44498', 'PO17748167942', '10-4020-000102', 29946, 278, 6, 462, 462, 5, 14454, '65397Vi74935', 1603, Decimal('15432.4643'), Decimal('1484.2606'), Decimal('463.8314'), Decimal('17380.5563'), None, '27AA09CD-B21A-4746-93D1-795F6A5F1869', datetime.datetime(2011, 10, 8, 0, 0))
(44499, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44499', 'PO17313144828', '10-4020-000389', 29680, 282, 6, 509, 509, 5, 18049, '55411Vi93678', 1603, Decimal('12170.6640'), Decimal('1168.3305'), Decimal('365.1033'), Decimal('13704.0978'), None, '1E6D774E-65DE-4187-8092-B33D50B1FACF', datetime.datetime(2011, 10, 8, 0, 0))
(44504, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44504', 'PO16733198490', '10-4020-000533', 30074, 282, 6, 534, 534, 5, 18260, '45577Vi94762', 1603, Decimal('19985.7845'), Decimal('1918.3929'), Decimal('599.4978'), Decimal('22503.6752'), None, '2AED033A-79E9-4EB8-8B52-82EE284CBF0E', datetime.datetime(2011, 10, 8, 0, 0))
(44512, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44512', 'PO14848164153', '10-4020-000478', 30042, 282, 6, 523, 523, 5, 10628, '85801Vi54777', 1603, Decimal('1677.8356'), Decimal('161.0722'), Decimal('50.3351'), Decimal('1889.2429'), None, '9D803CEA-6E58-4D78-A9F1-F2D6447891CB', datetime.datetime(2011, 10, 8, 0, 0))
(44525, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44525', 'PO11600189203', '10-4020-000569', 29510, 282, 6, 540, 540, 5, 14729, '26255Vi76327', 1603, Decimal('41452.6462'), Decimal('3972.4763'), Decimal('1241.3988'), Decimal('46666.5213'), None, 'DFE7D14B-4428-4447-90C8-06EFEB7D7943', datetime.datetime(2011, 10, 8, 0, 0))
(44526, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44526', 'PO11020190357', '10-4020-000336', 29789, 278, 6, 501, 501, 5, 18316, '126353Vi95120', 1603, Decimal('16506.1424'), Decimal('1586.9986'), Decimal('495.9371'), Decimal('18589.0781'), None, '4552593B-66EF-4661-B1BC-7E8B8AC8F4C1', datetime.datetime(2011, 10, 8, 0, 0))
(44527, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44527', 'PO10469169045', '10-4020-000335', 29558, 282, 6, 500, 500, 5, 11282, '66358Vi58190', 1603, Decimal('6127.7820'), Decimal('588.0543'), Decimal('183.7670'), Decimal('6899.6033'), None, 'D5EA88D5-3F30-4392-BC72-7CB8FCB8A140', datetime.datetime(2011, 10, 8, 0, 0))
(44529, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44529', 'PO10556131826', '10-4020-000534', 30010, 278, 6, 535, 535, 5, 18831, '56416Vi97838', 1603, Decimal('419.4589'), Decimal('40.2681'), Decimal('12.5838'), Decimal('472.3108'), None, '4CDC53D6-8DE7-42FB-AB22-D362EDB48BFC', datetime.datetime(2011, 10, 8, 0, 0))
(44533, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44533', 'PO1827111566', '10-4020-000317', 29698, 282, 6, 497, 497, 5, 11745, '76723Vi60734', 1603, Decimal('19499.7922'), Decimal('1870.0282'), Decimal('584.3838'), Decimal('21954.2042'), None, 'E0864761-5640-4309-95C3-46F07766AB8B', datetime.datetime(2011, 10, 8, 0, 0))
(44534, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44534', 'PO2146113582', '10-4020-000354', 29515, 278, 6, 504, 504, 5, 14184, '66759Vi73564', 1603, Decimal('85982.4771'), Decimal('8346.4572'), Decimal('2608.2679'), Decimal('96937.2022'), None, 'E74282C5-4AB8-4DC2-A5E0-37A4F55DC874', datetime.datetime(2011, 10, 8, 0, 0))
(44535, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44535', 'PO2088169831', '10-4020-000136', 29794, 282, 6, 466, 466, 5, 12102, '96763Vi62574', 1603, Decimal('23590.8589'), Decimal('2268.1124'), Decimal('708.7851'), Decimal('26567.7564'), None, '6972E8D7-2207-4EC7-B6B9-EF45FFDD66CA', datetime.datetime(2011, 10, 8, 0, 0))
(44537, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44537', 'PO2175178820', '10-4020-000137', 29541, 282, 6, 467, 467, 5, 13667, '66785Vi70824', 1603, Decimal('57.6808'), Decimal('4.9990'), Decimal('1.5622'), Decimal('64.2420'), None, '753D59C0-090E-4079-AEB8-0223DE3026E2', datetime.datetime(2011, 10, 8, 0, 0))
(44539, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44539', 'PO2030127941', '10-4020-000661', 29830, 278, 6, 553, 553, 5, 16905, '126805Vi87636', 1603, Decimal('1450.8898'), Decimal('143.0861'), Decimal('44.7144'), Decimal('1638.6903'), None, 'B8DE3E9B-182D-4072-BB86-58837A13ED39', datetime.datetime(2011, 10, 8, 0, 0))
(44542, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44542', 'PO2726160803', '10-4020-000029', 29807, 282, 6, 449, 449, 5, 13366, '36888Vi69277', 1603, Decimal('16259.8654'), Decimal('1560.5279'), Decimal('487.6650'), Decimal('18308.0583'), None, '9DBA264C-E04E-4E7A-8622-5CE4273B1421', datetime.datetime(2011, 10, 8, 0, 0))
(44547, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44547', 'PO4901179982', '10-4020-000084', 29705, 278, 6, 459, 459, 5, 6452, '48130Vi33489', 1603, Decimal('68958.1569'), Decimal('6654.9216'), Decimal('2079.6630'), Decimal('77692.7415'), None, '465FD52F-B070-4B1F-8E22-734A651C2C7A', datetime.datetime(2011, 10, 8, 0, 0))
(44560, 8, datetime.datetime(2011, 10, 1, 0, 0), datetime.datetime(2011, 10, 13, 0, 0), datetime.datetime(2011, 10, 8, 0, 0), 5, False, 'SO44560', 'PO6960179699', '10-4020-000532', 29785, 282, 6, 533, 533, 5, 6191, '118421Vi32168', 1603, Decimal('936.6567'), Decimal('92.4168'), Decimal('28.8802'), Decimal('1057.9537'), None, 'C6280C79-EE1B-4FB6-8C17-61EA6E807CCF', datetime.datetime(2011, 10, 8, 0, 0))
(44744, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44744', 'PO19401124443', '10-4020-000173', 29714, 282, 6, 473, 473, 5, 6065, '45198Vi31551', 1993, Decimal('29751.2786'), Decimal('2851.9856'), Decimal('891.2455'), Decimal('33494.5097'), None, '5756E3F2-F07D-487E-A796-157F9B780335', datetime.datetime(2011, 11, 7, 0, 0))
(44745, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44745', 'PO18299187625', '10-4020-000118', 29950, 282, 6, 463, 463, 5, 5110, '105347Vi26747', 1993, Decimal('26171.9347'), Decimal('2521.4019'), Decimal('787.9381'), Decimal('29481.2747'), None, '9024B3E0-EAF9-47C8-889A-97D87D18524A', datetime.datetime(2011, 11, 7, 0, 0))
(44746, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44746', 'PO17690131763', '10-4020-000047', 29803, 282, 6, 452, 452, 5, 8552, '125368Vi44231', 1993, Decimal('14290.1984'), Decimal('1371.4835'), Decimal('428.5886'), Decimal('16090.2705'), None, 'ACDA88C7-8280-453F-A2A3-FAF322F4D812', datetime.datetime(2011, 11, 7, 0, 0))
(44747, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44747', 'PO17719150324', '10-4020-000631', 29969, 278, 6, 548, 548, 5, 7454, '55388Vi38653', 1993, Decimal('10393.2366'), Decimal('997.3847'), Decimal('311.6827'), Decimal('11702.3040'), None, 'EF2DC4AA-0296-458B-AD78-391DC1523C25', datetime.datetime(2011, 11, 7, 0, 0))
(44749, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44749', 'PO17545111622', '10-4020-000155', 29639, 282, 6, 470, 470, 5, 4357, '85426Vi22856', 1993, Decimal('45851.7478'), Decimal('4401.1682'), Decimal('1375.3651'), Decimal('51628.2811'), None, 'C7552E0D-6E8C-4F75-B399-E5F08386EC41', datetime.datetime(2011, 11, 7, 0, 0))
(44750, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44750', 'PO17574147002', '10-4020-000678', 29722, 282, 6, 555, 555, 5, 12698, '65432Vi65677', 1993, Decimal('88977.3784'), Decimal('8579.0689'), Decimal('2680.9590'), Decimal('100237.4063'), None, '84593DC6-D983-4599-AC11-E3A2FBA3C90E', datetime.datetime(2011, 11, 7, 0, 0))
(44765, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44765', 'PO11107155025', '10-4020-000156', 29577, 278, 6, 471, 471, 5, 319, '16329Vi1621', 1993, Decimal('5821.1100'), Decimal('558.2675'), Decimal('174.4586'), Decimal('6553.8361'), None, 'BA254A9E-4224-4218-ADCB-77C4999B2465', datetime.datetime(2011, 11, 7, 0, 0))
(44766, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44766', 'PO10585113288', '10-4020-000498', 29755, 278, 6, 528, 528, 5, 6955, '26393Vi36178', 1993, Decimal('4102.7880'), Decimal('393.6548'), Decimal('123.0171'), Decimal('4619.4599'), None, '3F1747E3-AF2E-48FA-AB42-69C9973085C1', datetime.datetime(2011, 11, 7, 0, 0))
(44773, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44773', 'PO1740125070', '10-4020-000460', 29740, 282, 6, 520, 520, 5, 18813, '126660Vi97739', 1993, Decimal('20847.9280'), Decimal('1999.8143'), Decimal('624.9420'), Decimal('23472.6843'), None, '42AD354C-9FF1-4F21-AACA-FE60C54B23D2', datetime.datetime(2011, 11, 7, 0, 0))
(44774, 8, datetime.datetime(2011, 10, 31, 0, 0), datetime.datetime(2011, 11, 12, 0, 0), datetime.datetime(2011, 11, 7, 0, 0), 5, False, 'SO44774', 'PO1885185716', '10-4020-000588', 29649, 278, 6, 544, 544, 5, 778, '126737Vi3956', 1993, Decimal('12455.2805'), Decimal('1192.6689'), Decimal('372.7090'), Decimal('14020.6584'), None, '884954FA-425A-46F5-9165-DD012FBBBEE8', datetime.datetime(2011, 11, 7, 0, 0))
(45038, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45038', 'PO18473129920', '10-4020-000442', 29734, 282, 6, 517, 517, 5, 1346, '85287Vi6854', 2396, Decimal('27123.6534'), Decimal('2613.3362'), Decimal('816.6676'), Decimal('30553.6572'), None, '2C419B24-B1F6-4D9D-B2BF-1E68389B473B', datetime.datetime(2011, 12, 8, 0, 0))
(45039, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45039', 'PO18444197500', '10-4020-000227', 29994, 282, 6, 482, 482, 5, 10456, '125291Vi53935', 2396, Decimal('27722.1591'), Decimal('2666.1894'), Decimal('833.1842'), Decimal('31221.5327'), None, '0AF59811-C914-490B-ABF9-9984710296EB', datetime.datetime(2011, 12, 8, 0, 0))
(45047, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45047', 'PO14732155479', '10-4020-000514', 29614, 282, 6, 529, 529, 5, 1566, '85842Vi8045', 2396, Decimal('39547.8476'), Decimal('3819.0898'), Decimal('1193.4656'), Decimal('44560.4030'), None, '2FD124F6-1238-4DAA-9FB2-427537405019', datetime.datetime(2011, 12, 8, 0, 0))
(45052, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45052', 'PO13862115869', '10-4020-000119', 30067, 282, 6, 464, 464, 5, 3980, '95951Vi20982', 2396, Decimal('28409.9160'), Decimal('2727.3519'), Decimal('852.2975'), Decimal('31989.5654'), None, '9D67DE6A-AFE3-4CB5-B6E3-F072E8FF1441', datetime.datetime(2011, 12, 8, 0, 0))
(45054, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45054', 'PO12760127685', '10-4020-000083', 29596, 282, 6, 458, 458, 5, 19204, '26088Vi99806', 2396, Decimal('13254.3593'), Decimal('1272.4185'), Decimal('397.6308'), Decimal('14924.4086'), None, 'B980DDA1-21AE-4DEA-B0D5-8DCDCF66FB57', datetime.datetime(2011, 12, 8, 0, 0))
(45057, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45057', 'PO11049133413', '10-4020-000679', 29824, 278, 6, 556, 556, 5, 14030, '16339Vi72763', 2396, Decimal('22233.0559'), Decimal('2134.2282'), Decimal('666.9463'), Decimal('25034.2304'), None, '6128F680-E14F-4682-BDBB-61972A752E37', datetime.datetime(2011, 12, 8, 0, 0))
(45058, 8, datetime.datetime(2011, 12, 1, 0, 0), datetime.datetime(2011, 12, 13, 0, 0), datetime.datetime(2011, 12, 8, 0, 0), 5, False, 'SO45058', 'PO10527160614', '10-4020-000480', 29761, 278, 6, 525, 525, 5, 5439, '126372Vi28482', 2396, Decimal('5488.8419'), Decimal('526.9288'), Decimal('164.6653'), Decimal('6180.4360'), None, '69D103DF-8FC7-4D54-875B-52E4B5CDB9F6', datetime.datetime(2011, 12, 8, 0, 0))
(45268, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45268', 'PO19430121252', '10-4020-000318', 29548, 278, 6, 498, 498, 5, 5528, '115101Vi28965', 2737, Decimal('838.9178'), Decimal('80.5361'), Decimal('25.1675'), Decimal('944.6214'), None, 'DCE26604-B36A-4384-B7E4-62396CCBF900', datetime.datetime(2012, 1, 8, 0, 0))
(45269, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45269', 'PO19691172522', '10-4020-000353', 29620, 282, 6, 503, 503, 5, 5577, '105118Vi29202', 2737, Decimal('2024.9940'), Decimal('194.3994'), Decimal('60.7498'), Decimal('2280.1432'), None, '25EF0CA0-5F8D-4A22-9191-F925E5A421F9', datetime.datetime(2012, 1, 8, 0, 0))
(45272, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45272', 'PO19227144019', '10-4020-000210', 29539, 278, 6, 480, 480, 5, 181, '55220Vi966', 2737, Decimal('3775.1301'), Decimal('362.4125'), Decimal('113.2539'), Decimal('4250.7965'), None, '96D4F611-FDBF-44BB-A210-3D545FBD048D', datetime.datetime(2012, 1, 8, 0, 0))
(45276, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45276', 'PO18270194346', '10-4020-000011', 29813, 282, 6, 446, 446, 5, 12279, '85315Vi63488', 2737, Decimal('6089.9820'), Decimal('584.6383'), Decimal('182.6995'), Decimal('6857.3198'), None, '0A037201-9CF9-48E8-A6C0-9AF7EB2637A0', datetime.datetime(2012, 1, 8, 0, 0))
(45278, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45278', 'PO18415191281', '10-4020-000191', 29892, 282, 6, 476, 476, 5, 11072, '75325Vi57135', 2737, Decimal('29200.5190'), Decimal('2802.9807'), Decimal('875.9315'), Decimal('32879.4312'), None, 'DD6995FE-D03D-4871-8D30-169F22D7DBD1', datetime.datetime(2012, 1, 8, 0, 0))
(45279, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45279', 'PO17777133626', '10-4020-000208', 29988, 282, 6, 478, 478, 5, 9855, '45376Vi50783', 2737, Decimal('1022.8560'), Decimal('98.6847'), Decimal('30.8390'), Decimal('1152.3797'), None, 'CAEBB22D-42E3-4F7C-A8E3-3AFA04C2771D', datetime.datetime(2012, 1, 8, 0, 0))
(45280, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45280', 'PO17748162196', '10-4020-000102', 29946, 278, 6, 462, 462, 5, 14454, '65406Vi74935', 2737, Decimal('12755.8756'), Decimal('1225.5308'), Decimal('382.9784'), Decimal('14364.3848'), None, '4BEBEE0E-CBD7-4507-B257-E46515D76C03', datetime.datetime(2012, 1, 8, 0, 0))
(45282, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45282', 'PO17313168713', '10-4020-000389', 29680, 282, 6, 509, 509, 5, 18049, '55446Vi93678', 2737, Decimal('8156.3760'), Decimal('782.9057'), Decimal('244.6580'), Decimal('9183.9397'), None, '78FB8484-1176-4DAF-B6AB-06CE77B61628', datetime.datetime(2012, 1, 8, 0, 0))
(45284, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45284', 'PO16733112744', '10-4020-000533', 30074, 282, 6, 534, 534, 5, 18260, '45518Vi94762', 2737, Decimal('30015.7829'), Decimal('2881.4668'), Decimal('900.4584'), Decimal('33797.7081'), None, '3B279133-F05F-49B6-9004-8B2EC6D12679', datetime.datetime(2012, 1, 8, 0, 0))
(45293, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45293', 'PO14848112071', '10-4020-000478', 30042, 282, 6, 523, 523, 5, 10628, '85770Vi54777', 2737, Decimal('1677.8356'), Decimal('161.0722'), Decimal('50.3351'), Decimal('1889.2429'), None, '6991469A-2434-409E-9C42-33C71440D552', datetime.datetime(2012, 1, 8, 0, 0))
(45305, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45305', 'PO11600132440', '10-4020-000569', 29510, 282, 6, 540, 540, 5, 14729, '26246Vi76327', 2737, Decimal('22912.7325'), Decimal('2194.5119'), Decimal('685.7850'), Decimal('25793.0294'), None, '23ABE5CE-75CB-46E1-8133-6B77E8E3A2EB', datetime.datetime(2012, 1, 8, 0, 0))
(45306, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45306', 'PO11020195551', '10-4020-000336', 29789, 278, 6, 501, 501, 5, 18316, '126349Vi95120', 2737, Decimal('6112.4089'), Decimal('588.2628'), Decimal('183.8321'), Decimal('6884.5038'), None, '8C34839F-C3F2-4802-AAE7-23A683C3D8F6', datetime.datetime(2012, 1, 8, 0, 0))
(45310, 8, datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 13, 0, 0), datetime.datetime(2012, 1, 8, 0, 0), 5, False, 'SO45310', 'PO10469159835', '10-4020-000335', 29558, 282, 6, 500, 500, 5, 11282, '66466Vi58190', 2737, Decimal('14219.9580'), Decimal('1365.1160'), Decimal('426.5987'), Decimal('16011.6727'), None, 'E30BA8B0-89DB-4063-8D79-7428A175FDC2', datetime.datetime(2012, 1, 8, 0, 0))
In [3]:
import pandas as pd
import sqlalchemy as sa
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
# Create the SQLAlchemy engine
engine = sa.create_engine(connection_string)
# Connect to the database
conn = engine.connect()
try:
# Execute a query
query = "SELECT * FROM Sales.SalesOrderHeader"
df = pd.read_sql_query(query, conn)
print(df.head())
finally:
# Close the connection
conn.close()
SalesOrderID RevisionNumber OrderDate DueDate ShipDate Status \
0 43661 8 2011-05-31 2011-06-12 2011-06-07 5
1 43662 8 2011-05-31 2011-06-12 2011-06-07 5
2 43668 8 2011-05-31 2011-06-12 2011-06-07 5
3 43672 8 2011-05-31 2011-06-12 2011-06-07 5
4 43674 8 2011-05-31 2011-06-12 2011-06-07 5
OnlineOrderFlag SalesOrderNumber PurchaseOrderNumber AccountNumber ... \
0 False SO43661 PO18473189620 10-4020-000442 ...
1 False SO43662 PO18444174044 10-4020-000227 ...
2 False SO43668 PO14732180295 10-4020-000514 ...
3 False SO43672 PO13862153537 10-4020-000119 ...
4 False SO43674 PO12760141756 10-4020-000083 ...
CreditCardID CreditCardApprovalCode CurrencyRateID SubTotal \
0 1346 85274Vi6854 4 32726.4786
1 10456 125295Vi53935 4 28832.5289
2 1566 85817Vi8045 4 35944.1562
3 3980 95915Vi20982 4 6124.1820
4 19204 26081Vi99806 4 2624.3820
TaxAmt Freight TotalDue Comment \
0 3153.7696 985.5530 36865.8012 None
1 2775.1646 867.2389 32474.9324 None
2 3461.7654 1081.8017 40487.7233 None
3 587.6023 183.6257 6895.4100 None
4 251.9407 78.7315 2955.0542 None
rowguid ModifiedDate
0 D91B9131-18A4-4A11-BC3A-90B6F53E9D74 2011-06-07
1 4A1ECFC0-CC3A-4740-B028-1C50BB48711C 2011-06-07
2 281CC355-D538-494E-9B44-461B36A826C6 2011-06-07
3 194202AA-8E15-4932-A2C4-7A7AC0713639 2011-06-07
4 CE8BCA02-F705-4AAE-A446-5D8B660C3A1B 2011-06-07
[5 rows x 26 columns]
In [6]:
import pandas as pd
import dash
from dash import dcc
from dash import html
import plotly.express as px
import sqlalchemy as sa
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
# Create the SQLAlchemy engine
engine = sa.create_engine(connection_string)
# Fetch the data from the database
query = """
SELECT
soh.SalesOrderID,
soh.OrderDate,
soh.TotalDue
FROM
Sales.SalesOrderHeader soh
"""
data = pd.read_sql(query, engine)
# Convert the OrderDate column to datetime
data['OrderDate'] = pd.to_datetime(data['OrderDate'])
# Group the data by month and sum the TotalDue column
monthly_sales = data.groupby(pd.Grouper(key='OrderDate', freq='M'))['TotalDue'].sum().reset_index()
# Create the Dash app
app = dash.Dash(__name__)
# Define the app layout
app.layout = html.Div(children=[
html.H1(children='Total Sales Over Time'),
dcc.Graph(
id='sales-chart',
figure=px.line(monthly_sales, x='OrderDate', y='TotalDue', title='Total Sales Over Time')
)
])
# Run the app
if __name__ == '__main__':
app.run_server(debug=True, port=9000)
C:\Users\Mokgethwa Molongoana\anaconda3\Lib\site-packages\_plotly_utils\basevalidators.py:106: FutureWarning: The behavior of DatetimeProperties.to_pydatetime is deprecated, in a future version this will return a Series containing python datetime objects instead of an ndarray. To retain the old behavior, call `np.array` on the result
In [3]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
# Create the SQLAlchemy engine
engine = sa.create_engine(connection_string)
# Fetch data from the database
query = """
SELECT
pc.Name AS Category,
SUM(sod.LineTotal) AS TotalSales
FROM
Production.ProductCategory pc
JOIN Production.ProductSubcategory psc ON psc.ProductCategoryID = pc.ProductCategoryID
JOIN Production.Product p ON p.ProductSubcategoryID = psc.ProductSubcategoryID
JOIN Sales.SalesOrderDetail sod ON sod.ProductID = p.ProductID
GROUP BY
pc.Name
"""
category_sales = pd.read_sql(query, engine)
# Create the bar chart
fig = px.bar(category_sales, x='Category', y='TotalSales', title='Sales by Product Category')
fig.show()
In [4]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
# Create the SQLAlchemy engine
engine = sa.create_engine(connection_string)
query = """
SELECT
sod.LineTotal,
sod.UnitPriceDiscount
FROM
Sales.SalesOrderDetail sod
"""
sales_discount = pd.read_sql(query, engine)
# Create the scatter plot
fig = px.scatter(sales_discount, x='UnitPriceDiscount', y='LineTotal', title='Sales vs. Discount')
fig.show()
In [5]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
query = """
SELECT
st.Name AS Territory,
SUM(soh.TotalDue) AS TotalSales
FROM
Sales.SalesTerritory st
JOIN Sales.SalesOrderHeader soh ON soh.TerritoryID = st.TerritoryID
GROUP BY
st.Name
"""
territory_sales = pd.read_sql(query, engine)
# Create the pie chart
fig = px.pie(territory_sales, values='TotalSales', names='Territory', title='Sales by Territory')
fig.show()
In [6]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
query = """
SELECT
SalesOrderID,
TotalDue
FROM
Sales.SalesOrderHeader
"""
data = pd.read_sql(query, engine)
# Create the scatter plot
fig = px.scatter(data, x='SalesOrderID', y='TotalDue', title='Total Due by Sales Order ID')
fig.show()
In [7]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
query = """
SELECT
SalesOrderID,
TotalDue
FROM
Sales.SalesOrderHeader
"""
data = pd.read_sql(query, engine)
# Create the bar chart
fig = px.bar(data, x='SalesOrderID', y='TotalDue', title='Total Due by Sales Order ID')
fig.show()
In [8]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
query = """
SELECT
TotalDue
FROM
Sales.SalesOrderHeader
"""
data = pd.read_sql(query, engine)
# Create the histogram
fig = px.histogram(data, x='TotalDue', title='Distribution of Total Due Amounts', nbins=30)
fig.show()
In [10]:
import pandas as pd
import sqlalchemy as sa
import plotly.express as px
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
query = """
SELECT TOP 10
c.CustomerID,
SUM(soh.TotalDue) AS TotalSales
FROM
Sales.SalesOrderHeader soh
JOIN Sales.Customer c ON soh.CustomerID = c.CustomerID
GROUP BY
c.CustomerID
ORDER BY
TotalSales DESC
"""
data = pd.read_sql(query, engine)
# Create the histogram
fig = px.histogram(data, x='TotalSales', title='Sales Distribution by Top 10 Customers', nbins=10)
fig.show()
In [21]:
import pandas as pd
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
import sqlalchemy as sa
# Construct the connection string
connection_string = "mssql+pyodbc://@MOKGETHWA/AdventureWorks2016?driver=ODBC+Driver+17+for+SQL+Server&trusted_connection=yes"
# Define the SQL queries
query_pie_chart = """
SELECT
pc.Name AS Category,
SUM(sod.LineTotal) AS TotalSales,
ROUND(100.0 * SUM(sod.LineTotal) / (SELECT SUM(LineTotal) FROM Sales.SalesOrderDetail), 2) AS PercentageOfTotalSales
FROM
Production.ProductCategory pc
JOIN Production.ProductSubcategory psc ON psc.ProductCategoryID = pc.ProductCategoryID
JOIN Production.Product p ON p.ProductSubcategoryID = psc.ProductSubcategoryID
JOIN Sales.SalesOrderDetail sod ON sod.ProductID = p.ProductID
GROUP BY
pc.Name;
"""
query_histogram = """
WITH order_buckets AS (
SELECT
TotalDue,
NTILE(10) OVER (ORDER BY TotalDue) AS Bucket
FROM
Sales.SalesOrderHeader
)
SELECT
Bucket,
COUNT(*) AS OrderCount
FROM
order_buckets
GROUP BY
Bucket;
"""
query_top_customers = """
SELECT
TOP 10
c.CustomerID,
CONCAT(p.FirstName, ' ', p.LastName) AS CustomerName,
SUM(soh.TotalDue) AS TotalRevenue
FROM
Sales.SalesOrderHeader soh
JOIN Sales.Customer c ON c.CustomerID = soh.CustomerID
JOIN Person.Person p ON c.PersonID = p.BusinessEntityID
GROUP BY
c.CustomerID,
CONCAT(p.FirstName, ' ', p.LastName)
ORDER BY
TotalRevenue DESC;
"""
query_sales_by_territory = """
SELECT
st.Name AS Territory,
p.Name AS Product,
SUM(sod.LineTotal) AS TotalSales
FROM
Sales.SalesOrderHeader soh
JOIN Sales.SalesOrderDetail sod ON soh.SalesOrderID = sod.SalesOrderID
JOIN Sales.SalesTerritory st ON soh.TerritoryID = st.TerritoryID
JOIN Person.CountryRegion cr ON st.CountryRegionCode = cr.CountryRegionCode
JOIN Production.Product p ON sod.ProductID = p.ProductID
GROUP BY
st.Name,
p.Name;
"""
# Fetch data from the database
pie_chart_data = pd.read_sql(query_pie_chart, engine)
histogram_data = pd.read_sql(query_histogram, engine)
top_customers_data = pd.read_sql(query_top_customers, engine)
sales_by_territory_data = pd.read_sql(query_sales_by_territory, engine)
# Create the Dash app
app = dash.Dash(__name__)
# Define the app layout
app.layout = html.Div(children=[
html.H1('Sales Dashboard'),
dcc.Tabs([
dcc.Tab(label='Pie Chart', children=[
dcc.Graph(
id='pie-chart',
figure=px.pie(pie_chart_data, values='TotalSales', names='Category', title='Sales Contribution by Product Category')
)
]),
dcc.Tab(label='Histogram', children=[
dcc.Graph(
id='histogram',
figure=px.histogram(histogram_data, x='Bucket', y='OrderCount', title='Distribution of Order Totals')
)
]),
dcc.Tab(label='Top Customers', children=[
dcc.Graph(
id='top-customers',
figure=px.bar(top_customers_data, x='CustomerName', y='TotalRevenue', title='Top 10 Customers by Revenue')
)
]),
dcc.Tab(label='Sales by Territory', children=[
dcc.Graph(
id='sales-by-territory',
figure=px.bar(sales_by_territory_data, x='Territory', y='TotalSales', color='Product', barmode='group', title='Sales by Territory and Product')
)
]),
])
])
if __name__ == '__main__':
app.run_server(debug=True, port=9050)
In [ ]: